Each computer has its own instruction set. There were basically several approaches to this.
One approach is through the "status flag" method, where each math operation sets some internal flags visible to the program and these flags are used by instructions that perform a conditional jump. So you do some math operation, then immediately execute the jump instruction that jumps if the appropriate flag is (or isn't) set.
Sometimes the status flags exist but they are only set following specific instructions like CMP (compare) or TEST (compare to 0).
One approach is through systems with fixed instruction sizes, sometimes called "reduced instruction set" machines (though that nomenclature is not unique), where you do some instruction that includes a SKIP (i.e. skips the next instruction) based on the conditions of the operation containing the skip option. And the next instruction (the one that is optionally skipped) is a JUMP (assembly for "GO TO"). So either you take the skip and continue in-line or take the jump to another section of code.
In higher level languages, MOST of the ones I know use IF to signify that a test is to be performed and they introduce alternative instructions following the IF by having THEN and ELSE "clauses". And I have written code in at least half-a-dozen different families of languages including FORTRAN, BASIC, PASCAL, ALGOL, PL/1, and ADA.
There is also something called a "computed" GOTO or a SWITCH that allows dispatching, where you provide a number and a list of possible addresses. The instruction uses that number to hardware-compute which member of a LIST of addresses that you might want to jump to. In the BASIC language, that is referred to as a SELECT CASE statement. ADA just calls it a CASE.